/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.tesis2.pucp.Maestros.Grasp;

import com.tesis2.pucp.Modelo.TesisPedido;
import java.util.ArrayList;

/**
 *
 * @author pachon
 */
public class RCL extends ArrayList<TesisPedido>{
    
    void ordenarSegunCriterio(TesisPedido actual){
        TesisPedido aux;
        
        for (int i = 0 ; i < this.size() - 1 ; i++){
            for (int j = i + 1 ; j < this.size() ; j++){
                if (calcularDistancia(actual, this.get(i)) > calcularDistancia(actual, this.get(j))){
                    aux = this.get(i);
                    this.set(i, this.get(j));
                    this.set(j, aux);
                }
            }
        }
    }
    
    double calcularDistancia(TesisPedido actual, TesisPedido nueva){
       double distancia = 0;
       
       distancia = Math.sqrt(((nueva.getLatitud()-actual.getLatitud())*(nueva.getLatitud()-actual.getLatitud()))+((nueva.getLongitud()-actual.getLongitud())*(nueva.getLongitud()-actual.getLongitud())));
       
       return distancia;
    }
    
    void discriminar(float ALPHA, TesisPedido actual) {
        double diferencia = calcularDistancia(actual, this.get(this.size()-1)) - calcularDistancia(actual, this.get(0));
        diferencia *= ALPHA;
        for (int i = this.size()-1 ; i > 0 ; i--){
            if(calcularDistancia(actual, this.get(i)) > calcularDistancia(actual, this.get(0))+diferencia){
                this.remove(i);
            }
        }
    }
}
